'use strict';

const Controller = require('egg').Controller;

class QuestionCategoryController extends Controller {
  // 获取所有分类
  async index() {
    const { ctx } = this;
    try {
      const categories = await ctx.service.questionCategory.findAll();
      ctx.body = {
        code: 200,
        message: '获取分类列表成功',
        data: categories,
      };
    } catch (error) {
      ctx.logger.error('获取分类列表失败:', error);
      ctx.body = {
        code: 500,
        message: '获取分类列表失败',
        data: null,
      };
    }
  }

  // 根据ID获取分类
  async show() {
    const { ctx } = this;
    const { id } = ctx.params;
    try {
      const category = await ctx.service.questionCategory.findById(id);
      if (category) {
        ctx.body = {
          code: 200,
          message: '获取分类详情成功',
          data: category,
        };
      } else {
        ctx.body = {
          code: 404,
          message: '分类不存在',
          data: null,
        };
      }
    } catch (error) {
      ctx.logger.error('获取分类详情失败:', error);
      ctx.body = {
        code: 500,
        message: '获取分类详情失败',
        data: null,
      };
    }
  }

  // 创建分类
  async create() {
    const { ctx } = this;
    const { category_name } = ctx.request.body;
    try {
      if (!category_name) {
        ctx.body = {
          code: 400,
          message: '分类名称不能为空',
          data: null,
        };
        return;
      }
      const category = await ctx.service.questionCategory.create({ category_name });
      ctx.body = {
        code: 200,
        message: '创建分类成功',
        data: category,
      };
    } catch (error) {
      ctx.logger.error('创建分类失败:', error);
      ctx.body = {
        code: 500,
        message: '创建分类失败',
        data: null,
      };
    }
  }

  // 更新分类
  async update() {
    const { ctx } = this;
    const { id } = ctx.params;
    const { category_name } = ctx.request.body;
    try {
      if (!category_name) {
        ctx.body = {
          code: 400,
          message: '分类名称不能为空',
          data: null,
        };
        return;
      }
      const category = await ctx.service.questionCategory.update(id, { category_name });
      if (category) {
        ctx.body = {
          code: 200,
          message: '更新分类成功',
          data: category,
        };
      } else {
        ctx.body = {
          code: 404,
          message: '分类不存在',
          data: null,
        };
      }
    } catch (error) {
      ctx.logger.error('更新分类失败:', error);
      ctx.body = {
        code: 500,
        message: '更新分类失败',
        data: null,
      };
    }
  }

  // 删除分类
  async destroy() {
    const { ctx } = this;
    const { id } = ctx.params;
    try {
      const result = await ctx.service.questionCategory.delete(id);
      if (result) {
        ctx.body = {
          code: 200,
          message: '删除分类成功',
          data: null,
        };
      } else {
        ctx.body = {
          code: 404,
          message: '分类不存在',
          data: null,
        };
      }
    } catch (error) {
      ctx.logger.error('删除分类失败:', error);
      ctx.body = {
        code: 500,
        message: '删除分类失败',
        data: null,
      };
    }
  }
}

module.exports = QuestionCategoryController;
